package chaoyue.study.inner;

/**
 * 匿名内部类
 * 即方法内部类的简化版本，因为方法内部类的作用域只在方法内部，所以名字不那么重要
 * 让JVM帮我们生成一个名字就好（外部类+数字编号）
 */
public class AnonymousInnerClassTest {
    public void test() {
        // 匿名内部类其实就是方法内部类的简化版，在名字不重要的时候，就没必要专门写出来
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("hello1");
            }
        });
        // 上面的写法和下面的写法是等价的，只是因为MyRunnable这个类并不需要在其他地方使用
        // 所以并不需要单独指定名字，使用匿名内部类的方式能使代码更简介
        class MyRunnable implements Runnable{
            @Override
            public void run() {
                System.out.println("hello2");
            }
        }
        Thread t2 = new Thread(new MyRunnable());

        t1.start();
        t2.start();
    }

    public static void main(String[] args) {
        AnonymousInnerClassTest outer = new AnonymousInnerClassTest();
        outer.test();
    }
}
